﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text.RegularExpressions;
using System.Web.Security;
using System.Data;

namespace PizzaWic.user
{
    public partial class CreateAccount : System.Web.UI.Page
    {
        //protected void Page_PreInit(object sender, EventArgs e)
        //{
        //    if (Session["login"] == null)
        //        this.Page.MasterPageFile = "GenericUserDesign.master";
        //    else
        //        this.Page.MasterPageFile = "GenericLoggedUser.master";
        //}


        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void btnAdd_Click(object sender, EventArgs e)
        {
            if (!this.ValidPhone(this.phoneNumber.Text))
            {
                this.notification.Text = "Veuillez entrer un numéro de téléphone valide.";
                return;
            }
            if (!this.ValidMail(this.mail.Text))
            {
                this.notification.Text = "Veuillez entrer une adresse mail valide.";
                return;
            }
            if (this.ValidUser(this.login.Text))
            {
                this.notification.Text = "Ce login est déja utilisé";
                return;
            }
            this.addUser();
            Response.Redirect("../customer/DisplayProduct.aspx");
        }


        private void addUser()
        {
            String passwordCrypted = FormsAuthentication.HashPasswordForStoringInConfigFile(this.password.Text, "MD5");
            SqlAccess sqlAccess = new SqlAccess();
            Object[] data = new Object[10];
            data[0] = this.name.Text;
            data[1] = this.surname.Text;
            data[2] = this.login.Text;
            data[3] = passwordCrypted;
            data[4] = int.Parse(this.phoneNumber.Text);
            data[5] = this.mail.Text;
            data[6] = int.Parse(this.number.Text);
            data[7] = this.street.Text;
            data[8] = this.city.Text;
            data[9] = int.Parse(this.area_code.Text);
            sqlAccess.addCustomer(data);
        }

        private bool ValidMail(string adresse)
        {
            System.Text.RegularExpressions.Regex myRegex = new Regex(@"^([\w]+)@([\w]+)\.([\w]+)$");
            //([\w]+) ==> caractère alphanumérique apparaissant une fois ou plus 
            return myRegex.IsMatch(adresse); // retourne true ou false selon la vérification
        }

        private bool ValidPhone(string phone)
        {
            System.Text.RegularExpressions.Regex myRegex = new Regex(@"^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$");
            //([\w]+) ==> caractère alphanumérique apparaissant une fois ou plus 
            return myRegex.IsMatch(phone); // retourne true ou false selon la vérification
        }

        private bool ValidUser(string login)
        {
            SqlAccess sql = new SqlAccess();
            DataSet data = sql.getLoginFree(login);
            if (data.Tables[0].Rows.Count > 0)
                return true;
            return false;
        }
    }
}